﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using Eforcity.EbayApiDb.DbEnums;

namespace Eforcity.EbayApi
{
    class InputTypes
    {
    }

    public class EbayApiBaseInputType
    {
        public ConnectionStringSettings EbayStatConn;
        public string ApiEndPoint = string.Empty;
        public int ApiMaxRetry = 0;
        public int SessionCallLimit = 100;
        public int RetrySleepTime = 5000;

        public int MinCallAvail = 0;
        public int SellerId = -1;
        public int CredentialsId = -1;
    }

    public class GetSellerListingInputType : EbayApiBaseInputType
    {
        public List<int> SellerIdList;
        public DateTime DateUTCFrom = DateTime.MinValue;
        public DateTime DateUTCTo = DateTime.MinValue;
        public int ListingEntriesPerPage = 0;
        public int ListingHourProcessLot = 0; //Once it is setup, cannot be change
        public ConnectionStringSettings EbayApiFilterDbConn;
    }

    public class GetAllBiddersInputType : EbayApiBaseInputType
    {
        public List<int> SellerIdList;
        public DateTime DateFrom = DateTime.MinValue;
        public DateTime DateTo = DateTime.MinValue;
        public int BidderProcessLot = 0;
        public bool IsGTC = false;
        public int MaxSoldValue = 800; //Add by Joseph 20100520
        public int StartDateBefore = 40; //Add by Joseph 20100524
        public int LastUpdateBefore = 30; //Add by Joseph 20100526
    }

    public class GetItemInputType : EbayApiBaseInputType
    {
        public List<int> SellerIdList;
        public DateTime DateFrom = DateTime.MinValue;
        public DateTime DateTo = DateTime.MinValue;
    }

    public class EndItemInputType : EbayApiBaseInputType
    {
        public List<int> SellerIdList = new List<int>();
        public List<string> MediaUPCList = new List<string>();
        public List<string> SKUList = new List<string>();
        public List<Int64> CurrentEbayItemIdList = new List<Int64>();
        public Int64 testEbayItemNum = 0;

        //by eric 20090119
        public List<string> ItemIdList = new List<string>();
        public List<int> LitingTypeIdList = new List<int>();
        public EbayFeatureListingOptionEnum FeatureListingOption;

        public bool ExcludePromo = true;//Default Exclude Daily Deal
        public bool ExcludeEndingWithin12Hrs = false;//Default Include Ending Within 12 Hrs
    }

    public class GetFeedbackInputType : EbayApiBaseInputType
    {
        public List<int> SellerIdList;
        public bool IsFeedbackSummary = false;
        public bool AllowNonSpecificCredential = false;
    }

    public class GetMemberMessagesInputType : EbayApiBaseInputType
    {
        public Dictionary<int, string> SellerIdNameDict;

        public List<int> SellerIdList = new List<int>();
        public DateTime DateUTCFrom = DateTime.MinValue;
        public DateTime DateUTCTo = DateTime.MinValue;
        public int RequestEntriesPerPage = 0;
        public int RequestHourProcessLot = 0; //Once it is setup, cannot be change
        public int RequestMinProcessLot = 0; //Once it is setup, cannot be change.min
        public bool NonStop = false;
    }

    public class GetItemTransactionsInputType : EbayApiBaseInputType
    {
        public List<long> ItemIdList = new List<long>();
        public int EntriesPerPage = 0;
    }


    public class GetOrdersArrayType
    {
        
        public string BuyerUserID { get; set; }
        public string BuyerUserEmail { get; set; }
        public string ItemNumber { get; set; }
        public string SKU { get; set; }
        public int Quantity { get; set; }
        public decimal SalePrice = 0M;

        public string PayPayTxId { get; set; }
        public string TransactionID { get; set; }
        public string PostalCode { get; set; }

        public DateTime CreateTime = DateTime.MinValue;
        public DateTime PayTime = DateTime.MaxValue;
        public int SellerId { get; set; }

        //added by fong 2012-7-31
        public int EbayOrderNumber { get; set; }
        public string ShipName { get; set; }
        public string ShipAddress1 { get; set; }
        public string ShipAddress2 { get; set; }
        public string ShipCity { get; set; }
        public string ShipState { get; set; }
        public string ShipCountry { get; set; }
        public string ShipZip { get; set; }
        public string ShipPhone { get; set; }
        public string ShipMethod { get; set; }
        public string PaymentMethod { get; set; }
        public string EbayUserID { get; set; }
        public string BuyerCheckoutMessage { get; set; }
        public string Site { get; set; }
        public string CurrencyID { get; set; }
        public string CompleteStaus { get; set; }
        public string eBayPaymentStatus { get; set; }

        public decimal Total = 0M;
        public decimal Freight = 0M;
        public decimal HandleFee = 0M;

        public string Title { get; set; }
      
    }
    
}
